<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
   <meta name="Author" content="John Punin, Mukkai Krishnamoorthy">
   <title>XGMML (eXtensible Graph Markup and Modeling Language) 1.0 Draft Specification</title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">

<h1>
XGMML (eXtensible Graph Markup and Modeling Language)</h1>

<h2>
XGMML 1.0 Draft Specification.</h2>
This version:
<br>&nbsp;&nbsp;&nbsp; <a href="http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml-20010628.html">http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml-20010628.html</a>
<br>&nbsp;&nbsp;&nbsp; (provision of the <a href="xgmml.xsd">schema</a>
and <a href="xgmml.dtd">DTD</a> for XGMML)
<p>Newest version:
<br>&nbsp;&nbsp;&nbsp; <a href="http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml.html">http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml.html</a>
<p>Previous version:
<br>&nbsp;&nbsp;&nbsp; <a href="http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml-20010625.html">http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml-20010625.html</a>
<p>Editors:
<br>&nbsp;&nbsp;&nbsp; John Punin <a href="mailto:puninj@cs.rpi.edu">&lt;puninj@cs.rpi.edu></a>,
(RPI)
<br>&nbsp;&nbsp;&nbsp; Mukkai Krishnamoorthy <a href="mailto:moorthy@cs.rpi.edu">&lt;moorthy@cs.rpi.edu></a>,
(RPI)
<p>
<hr WIDTH="100%">
<h2>
Abstract</h2>
This draft specification defines the syntax of the Extensible Graph Markup
and Modeling Language (XGMML). XGMML is an XML application for describing
Graphs.
<h2>
Table of Contents</h2>
<a href="#Intro">1. Introduction</a>
<br><a href="#XGMML-Doc">2. XGMML Documents</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#XGMML-WF-Doc">2.1 Well-Formed XGMML Documents</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#XGMML-V-Doc">2.2 Valid XGMML Documents</a>
<br><a href="#XGMML-GML">3. XGMML and GML</a>
<br><a href="#StructXGMMLDoc">4. Structure of XGMML Documents</a>
<br><a href="#XGMMLDT">5. XGMML Data Types</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#BT">5.1 Boolean Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#NT">5.2 Number Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#ST">5.3 String Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#UT">5.4 URI Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#AT">5.5 Anchor Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#TypeGO">5.6 Type of Graphic objects.</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#LT">5.7 Line Types</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#TT">5.8 Text Types</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#CT">5.9 Color Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#AnT">5.10 Angle Type</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#OT">5.11 Object Type</a>
<br><a href="#GraphE">6. Graph Element</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#GlobalA">6.1 Global Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#XMLA">6.2 XML Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#XLinkA">6.3 XLink Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#GraphA">6.4 Graph Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#GraphMC">6.5 Graph Mixed Content</a>
<br><a href="#NodeE">7. Node Element</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#NodeA">7.1 Node Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#NodeMC">7.2 Node Mixed Content</a>
<br><a href="#EdgeE">8. Edge Element</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#EdgeA">8.1 Edge Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#EdgeMC">8.2 Edge Mixed Content</a>
<br><a href="#AttE">9. Att Element</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#AttA">9.1 Att&nbsp; Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#AttMC">9.2 Att Mixed Content</a>
<br><a href="#GLCPE">10. Graphics, Line, Center and Point elements</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#GraphicsA">10.1 Graphics Attributes</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#LPCA">10.2 Line, Point and Center Attributes</a>
<br><a href="#XGMML-RDF">11. XGMML and RDF</a>
<h3>
<a href="#Appendices">Appendices</a></h3>
<a href="#Characters">A. Characters</a>
<br><a href="#XGMML-DTD">B. XGMML 1.0 DTD</a>
<br><a href="#XGMML-Schema">C. XGMML 1.0 Schema</a>
<br><a href="#XGMML-Ex">D. XGMML Examples</a>
<br><a href="#XGMML-MIME">E. XGMML Internet Media Type</a>
<br><a href="#Ref">F. References</a>
<br>
<hr WIDTH="100%">
<h2>
<a NAME="Intro"></a>1. Introduction</h2>
Extensible Graph Markup and Modeling Language (XGMML) is an XML 1.0 application
based on Graph Modeling Language (GML) to describe Graphs [<a href="#Ref">GML</a>].
A Graph, G= (V,E), is a set of nodes V and a set of edges E. Each edge
is either an ordered (directed graph) or unordered (undirected) pair of
nodes. Since graphs can be described&nbsp; as a data object whose elements
are nodes and edges which are data objects, XML is an ideal way to represent
graphs. Structure of the World Wide Web is a typical example of a graph
where the web pages are "nodes," and the hyperlinks are "edges." The best
way to describe a web site structure is using a graph structure so XGMML
documents are a good choice for containing the structural information of
a web site.
<h2>
<a NAME="XGMML-Doc"></a>2. XGMML Documents</h2>
Since XGMML is an application of XML, XGMML documents can be well-formed
documents or valid documents.
<h3>
<a NAME="XGMML-WF-Doc"></a>2.1 XGMML Well-formed Documents</h3>
An XGMML well-formed document is an XML well-formed document that described
a graph using the graph, node and edge elements of XGMML. A <b>graph</b>
element may be the root element of the XGMML well-formed document. Two
cases of XGMML well-formed document can be found.&nbsp; The first case
is XGMML documents with additional proprietary elements from a vendor.
The second case is&nbsp; XGMML documents that are contained&nbsp; on other
XML documents.
<h3>
<a NAME="XGMML-V-Doc"></a>2.2 XGMML Valid Documents</h3>
An XGMML valid document can be validated against an XGMML DTD or XGMML
Schema [<a href="#Ref">XML-SCHEMA</a>]. The XGMML DTD and XGMML Schema
are provided in the Appendices section. A valid XML document can have multiple
schemas. The namespace for XGMML is: <i>http://www.cs.rpi.edu/XGMML </i>and
the suffix for the XGMML elements is <i>xgmml</i>:.
<h2>
<a NAME="XGMML-GML"></a>3. XGMML and GML</h2>
XGMML is based on GML [<a href="#Ref">GML</a>]. GML is a powerful language
used on many software applications to describe graph structures. XGMML
uses all tags of GML and a few additional tags. Conversion of a GML description
to an XGMML description is easy. A GML description is a collection of key-value
pairs. The keys are string identifiers such as
<i>graph</i>,
<i>node
</i>and
<i>edge</i>
and the values can be numbers, strings or a list of key-value pairs. The
following rule is used to map GML to XGMML:
<blockquote>A GML key is a name of an XGMML element if its value is a list
of key-value pairs. A GML key is a name of an XGMML attribute if its value
is a number or string.</blockquote>
Two exceptions are considered: the <i>comment</i> GML tag and the GML lines
starting with "#" character must be ignored or translated to XML comments
&lt;!-- <i>comment </i>-->
<p>GML consider key names as safe or unsafe. Unsafe key names are the ones
that the application program discards when a change to the graph occurred.
They can be recognized if the key name starts with a capital letter. This
rule is included in XGMML. The XGMML attributes are classified as safe
and unsafe attributes.
<h2>
<a NAME="StructXGMMLDoc"></a>4. Structure of XGMML Documents</h2>
An XGMML document describes a graph structure. The root element is <b>graph</b>
and it can contain <b>node, edge</b> and <b>att </b>elements. The <b>node</b>
element describes a node of a graph and the
<b>edge</b> element describes
an edge of a graph. Additional information for graphs, nodes and edges
can be attached using the <b>att</b> element. A <b>graph</b> element can
be contained in an <b>att</b> element and this graph will be considered
as subgraph of the main graph. The <b>graphics </b>element can be included
in a <b>node</b> or <b>edge </b>element, and it describes the graphic representation
either of a node or an edge. The following example is a graph with just
one node.
<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//EN" "http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">
&lt;graph directed="1" id="2">
&lt;node id="1" label="Node 1"/>
&lt;/graph></pre>
The following XGMML document describes a graph with two nodes and one edge.
<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//EN" "http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">
&lt;graph directed="1" id="5">
&lt;node id="1" label="Node 1"/>
&lt;node id="2" label="Node 2"/>
&lt;edge source="1" target="2" label="Edge 1"/>
&lt;/graph></pre>
XGMML documents can be validated against the DTD <i>"<a href="#XGMML-DTD">xgmml.dtd</a>"</i>
whose URL is: <i><a href="http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd</a></i>
<p>XGMML well formed documents can be part of other XML documents.&nbsp;
The following example is a graph inside of an XHTML document [<a href="#Ref">XHTML
1.0</a>]:
<pre>&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;html xmlns="http://www.w3.org/1999/xhtml"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/1999/XMLSchema/instance"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xgmml="http://www.cs.rpi.edu/XGMML"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://www.w3.org/1999/Style/Transform
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.w3.org/1999/Style/Transform/xslt.xsd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.w3.org/1999/xhtml
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.w3.org/1999/xhtml/xhtml.xsd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.cs.rpi.edu/XGMML
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.cs.rpi.edu/~puninj/XGMML/xgmml.xsd"</pre>

<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:lang="en">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;head>
&lt;title>Graph Information&lt;/title>
&lt;/head>
&lt;body>

&lt;!-- XHTML Document here -->

&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:graph directed="1" graphic="1" Layout="points">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:node id="1" label="1" weight="0">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:graphics type="circle" x="250" y="90" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xgmml:node>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:node id="2" label="2"weight="0">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:graphics type="circle" x="190" y="150" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xgmml:node>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xgmml:edge source="1" target="2" weight="0" />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xgmml:graph>

&lt;!-- XHTML Document here -->

&lt;/body>
&lt;/html></pre>
Other examples of XGMML Documents can be found in Apendix D of this draft.
<h2>
<a NAME="XGMMLDT"></a>5. XGMML Data Types</h2>
XGMML data types are defined based on the following XML data types:
<ul>
<li>
<a href="http://www.w3.org/TR/1998/REC-xml-19980210#NT-Nmtoken">NMTOKEN</a>
is any mixture of name characters.</li>

<li>
<a href="http://www.w3.org/TR/1998/REC-xml-19980210#NT-AttValue">CDATA</a>
is XML Literal data. It is any quoted string.</li>

<li>
PCDATA is Parsed Character Data. It is any string that does not contain
markup text.</li>
</ul>

<h3>
<a NAME="BT"></a>5.1 Boolean Type</h3>

<pre>&lt;!ENTITY % boolean.type "(0|1)" ></pre>
Boolean values are 0 for false and 1 for True.
<h3>
<a NAME="NT"></a>5.2 Number Type</h3>

<pre>&lt;!ENTITY % number.type "NMTOKEN"></pre>
Numbers can be integers or reals.
<h3>
<a NAME="ST"></a>5.3 String Type</h3>

<pre>&lt;!ENTITY % string.type "CDATA"></pre>
Strings are XML Literal data that can not contain a quoted character.
<h3>
<a NAME="UT"></a>5.4 URI Type</h3>

<pre>&lt;!ENTITY % uri.type "%string.type;"></pre>
URI are strings that are Uniform Resource Identifiers as defined in [<a href="#Ref">RFC1630</a>].
URIs include relative and absolute Uniform Resource Locators as defined
in [<a href="#Ref">RFC1738</a>] and [<a href="#Ref">RFC1808</a>].
<h3>
<a NAME="AT"></a>5.5 Anchor Type</h3>

<pre>&lt;!ENTITY % anchor.type "(c|n|ne|e|se|s|sw|w|nw)"></pre>
Anchor type is defined in GML as the relative position of an object. Anchor
type is an enumerated type whose possible values are c (center), n (north),
ne (northeast), e (east), se (southeast), s (south), sw (southweast), w
(west) and nw (northwest).
<h3>
<a NAME="TypeGO"></a>5.6 Type of Graphic Objects</h3>

<pre>&lt;!ENTITY % type-graphics-gml.type "arc|bitmap|image|line|oval|polygon|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle|text">
&lt;!ENTITY % type-graphics-app.type "box|circle|ver_ellipsis|hor_ellipsis|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rhombus|triangle|pentagon|hexagon|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; octagon"></pre>
The type of graphic objects is an enumerated type whose values depend mainly
on the application that reads XGMML documents. XGMML extends the possible
values of the GML type of graphic objects.
<h3>
<a NAME="LT"></a>5.7 Line Types</h3>

<pre>&lt;!ENTITY % arrow.type "(none | first | last | both)">
&lt;!ENTITY % capstyle.type "(butt | projecting | round)">
&lt;!ENTITY % joinstyle.type "(bevel | miter | round)">
&lt;!ENTITY % arcstyle.type "(pieslice | chord | arc)"></pre>
Line Types are enumerated types and they are: Arrow, Capstyle, Joinstyle
and Arcstyle. Arrow type defines the position of the arrow. Capstyle type
defines the end of the line. Joinstyle type defines the Line joints. Arcstyle
defines the style of an arc.
<h3>
<a NAME="TT"></a>5.8 Text Types</h3>

<pre>&lt;!ENTITY % justify.type "(left | right | center)">
&lt;!ENTITY % font.type "%string.type;"></pre>
Justify type is an enumerated type that defines the text justification.
Font type is a string that represents the name of the font to be used for
the text.
<h3>
<a NAME="CT"></a>5.9 Color Type</h3>

<pre>&lt;!ENTITY % color.type "%string.type;"></pre>
Color type is a string that represents the color to be used by the Graphic
object. The format is the same as the <a href="http://www.w3.org/TR/REC-CSS2/syndata.html#color-units">color
type in CSS2</a> [<a href="#Ref">CSS2</a>]. The color can be either a keyword
or a numerical RGB specification. Examples are the strings : "white", "#FFFFF",
"rgb(100,150,30)".
<h3>
<a NAME="AnT"></a>5.10 Angle Type</h3>

<pre>&lt;!ENTITY % angle.type "%string.type;"></pre>
Angle type is a string that represents the angle to be used by an arc.
The format is the same as the <a href="http://www.w3.org/TR/REC-CSS2/syndata.html#q19">angles
type in CSS2</a> [<a href="#Ref">CSS2</a>]. It starts with a number (<i>number.type</i>)
followed by an angle unit identifier: <i>deg</i> (degrees), <i>grad</i>
(grads), <i>rad</i> (radians). If no angle unit identifier is given, <i>deg</i>
(degrees) is the default.
<h3>
<a NAME="OT"></a>5.11 Object Type</h3>

<pre>&lt;!ENTITY % object.type "(list | string | real | integer)"></pre>
Object type is an enumerated type that consist of the GML possible values
of an object. A GML file is composed of key-value pairs. The type of the
possible values of the keys are <i>list</i>, <i>string</i>, <i>real</i>
or <i>integer</i>.
<h2>
<a NAME="GraphE"></a>6. Graph Element</h2>

<pre>&lt;!ELEMENT graph (att*,(node | edge)*)>
&lt;!ATTLIST graph
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xml-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-gml-unsafe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-app-unsafe;></pre>
The <b>graph</b> element is the root element of an XGMML valid document.
This <b>graph</b> element contains the rest of the XGMML elements. The
<b>graph</b>
element&nbsp; may not be unique in the XGMML document. Other graphs can
be included as subgraphs of the main graph. Please refer to the <b>att</b>
element.
<h3>
<a NAME="GlobalA"></a>6.1 Global Attributes</h3>

<pre>&lt;!ENTITY % global-atts "id %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelanchor %string.type; #IMPLIED"></pre>
The following attributes are attributes of all XGMML elements :
<ul>
<li>
<b>id</b> - Unique number to identify the elements of XGMML document</li>

<li>
<b>name</b> - String to identify the elements of XGMML document</li>

<li>
<b>label</b> - Text representation of the XGMML element</li>

<li>
<b>labelanchor</b> - Anchor position of the label related to the graphic
representation of the XGMML element</li>
</ul>

<h3>
<a NAME="XMLA"></a>6.2 XML Attributes</h3>

<pre>&lt;!ENTITY % xml-atts "xmlns CDATA #FIXED 'http://www.cs.rpi.edu/XGMML'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:lang NMTOKEN #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:space (default | preserve) #IMPLIED"></pre>
These attributes are standard XML attributes:
<ul>
<li>
<b>xmlns</b> - This attribute identifies the XML Namespace. [<a href="#Ref">XML-NS</a>]
The namespace for XGMML is the URI : <i>http://www.cs.rpi.edu/XGMML .</i></li>

<li>
<b>xml:lang</b> - This attribute specifies the language used in the values
of the attributes and elements. [<a href="#Ref">ISO 639</a>] [<a href="#Ref">XML-1.0</a>]</li>

<li>
<b>xml:space</b> - This attribute specifies if white space is preserved
or not. The possible values are <i>default </i>and <i>preserve</i>. [<a href="#Ref">XML-1.0</a>]</li>
</ul>

<h3>
<a NAME="XLinkA"></a>6.3 XLink Attributes</h3>

<pre>&lt;!ENTITY % xlink-atts "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:type (simple) #FIXED 'simple'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:role CDATA #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:title CDATA #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:show (new|embed|replace) #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:actuate (onLoad|onRequest) #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:href CDATA #IMPLIED"></pre>
Nodes and Edges can reference XGMML documents.&nbsp; For example, a node
can represent a graph that can be shown when the user points&nbsp; in the
node. This behavior is similar to hyperlinks in HTML documents. XGMML uses
XLink framework [<a href="#Ref">XLINK</a>]&nbsp; to create hyperlinks either
in nodes or edges. All these attributes are taking directly from the XLink
Working Draft.
<ul>
<li>
<b>xmlns:xlink</b> - This attribute identifies the XML Namespace of XLink.
The namespace for XLink is <i>http://www.w3.org/1999/xlink .</i></li>

<li>
<b>xlink:type</b> - This attribute identifies the type of Xlink. The only
possible value is: <i>simple</i>. The default value is <i>simple</i>. A
simple link associates only two resources.</li>

<li>
<b>xlink:role </b>- This attribute is a machine-readable string to describe
the link's remote resource.</li>

<li>
<b>xlink:title</b> - This attribute is a human-readable string to describe
the link's remote resource.</li>

<li>
<b>xlink:show</b> - This attribute describes the behavior of the application
after an activation of the link. The possible values are <i>new</i> (open
new window), <i>embed </i>(replace the starting resource), <i>replace </i>(load&nbsp;
the resource in the same window).</li>

<li>
<b>xlink:actuate</b> - This attribute also describes the behavior of the
application after an activation of the link. The possible values are <i>onLoad</i>
(the application automatically traverses the link) and <i>onRequest </i>(the
application waits for an event to traverse the link).</li>

<li>
<b>xlink:href</b> - This attribute refers to the URI of the remote resource.</li>
</ul>

<h3>
<a NAME="GraphA"></a>6.4 Graph Attributes</h3>

<pre>&lt;!ENTITY % graph-atts-safe "directed %boolean.type; '0' ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;!ENTITY % graph-atts-gml-unsafe "Vendor %string.type;&nbsp; #IMPLIED">
&lt;!ENTITY % graph-atts-app-unsafe "Scale %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rootnode %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Layout %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphic %boolean.type; #IMPLIED"></pre>
The <b>graph</b> attributes can be safe or unsafe and they are:
<ul>
<li>
global attributes</li>

<li>
xml attributes</li>

<li>
xlink attributes</li>

<li>
<b>directed</b> - Boolean value. Graph is directed if this attribute is
1 (true) otherwise is undirected. The default value is 0 (false).</li>

<li>
<b>Vendor</b> - Unsafe GML key to show the application that created the
XGMML file.</li>

<li>
<b>Scale </b>- Unsafe numeric value to scale the size of the displayed
graph.</li>

<li>
<b>Rootnode </b>- Unsafe id number to identify the root node of the graph.
Useful for tree drawing.</li>

<li>
<b>Layout </b>- Unsafe string that represent the layout that can be applied
to display the graph. The layout name is the name of the algorithm to assign
position to the nodes of the graph. For example: circular.</li>

<li>
<b>Graphic</b> - Unsafe boolean value. If this value is 1 (true), the XGMML
file includes graphical representation of the graph. False means that the
XGMML file includes only topological structure of the graph and the application
program is free to display the graph using any layout.</li>
</ul>

<h3>
<a NAME="GraphMC"></a>6.5 Graph Mixed Content</h3>
The only elements allowed in a <b>graph</b> element are: <b>node</b>, <b>edge</b>
and <b>att</b>. The <b>graph</b> element can be an empty graph. For valid
XGMML documents, <b>att</b>s may be placed first or last, and <b>node</b>s
and <b>edge</b>s may be freely intermingled. Nodes must have different
<b>id</b>s
and <b>name</b>s attributes. Edges can not reference to nodes that are
not included in the XGMML definition.
<h2>
<a NAME="NodeE"></a>7. Node Element</h2>

<pre>&lt;!ELEMENT node (graphics?,att*)>
&lt;!ATTLIST node
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %node-atts-gml-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %node-atts-app-safe;></pre>
A <b>node</b> element must be included in a <b>graph</b> element. Each
<b>node</b>
element describes the properties of a node object. The node can be rendered
as a graphic object and also can have additional meta information to be
used for the application program. The only elements allowed inside the
node are <b>graphics</b> and <b>att</b>. The graphic representation of
the node is reported on the <b>graphics </b>element. The additional meta
information is reported on the <b>att</b> element.
<h3>
<a NAME="NodeA"></a>7.1 Node Attributes</h3>

<pre>&lt;!ENTITY % node-atts-gml-safe "edgeanchor %anchor.type; #IMPLIED">
&lt;!ENTITY % node-atts-app-safe "weight %string.type;&nbsp; #IMPLIED"></pre>
The node attributes are:
<ul>
<li>
global attributes</li>

<li>
xlink attributes</li>

<li>
<b>edgeancho</b>r - GML key to position the edges related to the node</li>

<li>
<b>weight</b> - value (usually numerical) to show the node weight -Useful
for weight graphs</li>
</ul>

<h2>
<a NAME="NodeMC"></a>7.2 Node Mixed Content</h2>
The<b> graphics</b> and <b>att</b> are the only elements allowed in the
<b>node</b>
element. The <b>graphics</b> element shows the graphical representation
of the node. For example, a graphical representation of a node can be a
rectangle, a circle or a bitmap.&nbsp; An <b>att</b> element is used to
attach additional meta information related to the node. For example, if
a node is a representation of a web page, useful metadata is the title,
date of creation and&nbsp; size of the web page. A node of a graph can
be a subgraph so the <b>att </b>element can be used to include the subgraph.
Please see <b>att</b> element for more details.
<h2>
<a NAME="EdgeE"></a>8. Edge Element</h2>

<pre>&lt;!ELEMENT edge (graphics?,att*)>
&lt;!ATTLIST edge
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %edge-atts-gml-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %edge-atts-app-safe;></pre>
An <b>edge</b> element must be included in a <b>graph</b> element. For
each <b>edge</b> element at least two <b>node</b> elements have to be included
in the <b>graph</b> element. An edge is between a source node and a target
node. The application program must verify if the source node and target
node are included in the XGMML document. The edge element as the node element
can have a graphical representation and additional metadata information.
The <b>graphics</b> and <b>att </b>elements are the only elements allowed
inside of the <b>edge </b>element. The graphic representation of the edge
is reported on the <b>graphics </b>element. The additional meta information
is reported on the <b>att</b> element.
<h3>
<a NAME="EdgeA"></a>8.1 Edge Attributes</h3>

<pre>&lt;!ENTITY % edge-atts-gml-safe "source %number.type; #REQUIRED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target %number.type; #REQUIRED">
&lt;!ENTITY % edge-atts-app-safe "weight %string.type; #IMPLIED"></pre>
The edge attributes are:
<ul>
<li>
global attributes</li>

<li>
xlink attributes</li>

<li>
<b>source </b>- The id number of the source node of the edge</li>

<li>
<b>target</b> - The id number of the target node of the edge</li>

<li>
<b>weight </b>- A string (usually a number) representing the weight of
the edge.</li>
</ul>

<h3>
<a NAME="EdgeMC"></a>8.2 Edge Mixed Content</h3>
The<b> graphics</b> and <b>att</b> are the only elements allowed in an
<b>edge</b>
element. The <b>graphics</b> element shows the graphical representation
of an edge. For example, a graphical representation of an edge can be a&nbsp;
line or an arc.&nbsp; An <b>att</b> element is used to attach additional
meta information related to an edge. For example, if an edge is a representation
of a&nbsp; hyperlink, useful metadata is anchor string and type of the
hyperlink.
<h2>
<a NAME="AttE"></a>9. Att Element</h2>

<pre>&lt;!ELEMENT att (#PCDATA | att | graph)*>
&lt;!ATTLIST att
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %attribute-value;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %attribute-type;></pre>
An <b>att </b>element is used to hold meta information about the element
that contains the <b>att</b> element. An <b>att</b> element can contain
other <b>att</b> elements, for example to represent structured metadata
such as records, lists, etc. A <b>graph </b>element can be contained in
an <b>att</b> element. This graph is considered as a subgraph of the main
graph.
<h2>
<a NAME="AttA"></a>9.1 Att Attributes</h2>

<pre>&lt;!ENTITY % attribute-value "value %string.type; #IMPLIED">
&lt;!ENTITY % attribute-type "type %object.type;&nbsp; #IMPLIED"></pre>
The att attributes are:
<ul>
<li>
global attributes</li>

<li>
<b>name</b> - Global attribute that contains the name of the metadata information.</li>

<li>
<b>value</b> - The value of the metadata information.</li>

<li>
<b>type</b> - The object type of the metadata information. Please refer
to object type section. The default object type is string.</li>
</ul>
For example to attach the information [integer rad = 30] to a node the
following line is included in the node element :
<pre>&lt;att type="integer" name="rad" value="30"/></pre>

<h3>
<a NAME="AttMC"></a>9.2 Att Mixed Content</h3>
All of <b>att</b>, <b>graph</b> and PCDATA can be inside of <b>att</b>
element. An <b>att</b> is an empty element for object types such as integers,
reals and integers. When the object type is a list, other <b>att </b>element
must be inside of the <b>att</b> element to hold the list information.
When a <b>graph</b> element is contained in the <b>att</b> element, that
graph is a subgraph of the main graph.
<p>For example, the metadata of an object&nbsp; <i>person</i> A is name:John,
ssn: 123456789 and e-mail:john@rpi.edu. To attach this metadata to a node
of a graph using the <b>att</b> element, the following lines must be included
in the <b>node</b> element:
<pre>&lt;att type="list" name="person_description">
&lt;att name="name" value="John"/>
&lt;att name="ssn" value="123456789"/>
&lt;att name="e-mail" value="john@rpi.edu"/>
&lt;/att></pre>

<h2>
<a NAME="GLCPE"></a>10. Graphics, Line, Center and Point elements</h2>

<pre>&lt;!ELEMENT graphics ((Line? | center?),att*)>
&lt;!ATTLIST graphics
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graphics-type-att;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %dimension-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %external-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %line-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %text-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %bitmap-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %arc-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %object-atts;>
&lt;!ELEMENT center EMPTY>
&lt;!ATTLIST center&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;>
&lt;!ELEMENT Line (point,point+)>
&lt;!ELEMENT point EMPTY>
&lt;!ATTLIST point&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;></pre>
The <b>graphics</b> element defines the graphical representation a graph,
a node or an edge. A <b>graphics </b>element must be&nbsp; included in
a <b>graph</b>, <b>node</b> or <b>edge</b> element. <b>Line</b>, <b>center</b>
and <b>att </b>elements are the only elements that can be contained in
a <b>graphics</b> element. <b>Line</b> element is defined between two <b>point</b>
elements and it is used to represent edges. <b>center </b>element is a
special <b>point </b>element to represent the central point of the graphical
representation of a node. The <b>att </b>element permits to add information
to the graphical representation. All these elements are inherited from
GML.
<h3>
<a NAME="GraphicsA"></a>10.1 Graphics Attributes</h3>

<pre>&lt;!ENTITY % graphics-type-att "type (%type-graphics-gml.type;|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %type-graphics-app.type;) #IMPLIED">
&lt;!ENTITY % point-atts "x %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; z %number.type; #IMPLIED">
&lt;!ENTITY % dimension-atts "w %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d %number.type; #IMPLIED">
&lt;!ENTITY % external-atts "image %uri.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap %uri.type; #IMPLIED">
&lt;!ENTITY % line-atts "width %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrow %arrow.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capstyle %capstyle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; joinstyle %joinstyle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smooth %boolean.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; splinesteps %number.type; #IMPLIED">
&lt;!ENTITY % text-atts "justify %justify.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font&nbsp; %font.type; #IMPLIED">
&lt;!ENTITY % bitmap-atts "background %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreground %color.type; #IMPLIED">
&lt;!ENTITY % arc-atts "extent %angle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start %angle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; style %arcstyle.type;&nbsp; #IMPLIED">
&lt;!ENTITY % object-atts "stipple %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; visible %boolean.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fill %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outline %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anchor %anchor.type; #IMPLIED"></pre>
The graphics attributes are divided in the following groups:
<ul>
<li>
Graphics type attribute</li>

<ul>
<li>
<b>type</b> - The type of the graphic object. The type of graphics objects
are mentioned in section 5.6</li>
</ul>

<li>
Point attributes</li>

<ul>
<li>
<b>x</b>, <b>y</b> and <b>z</b> - The coordinates of a point (x, y, z).
The point can be two or three dimensional</li>
</ul>

<li>
Dimension attributes</li>

<ul>
<li>
<b>w</b>, <b>h</b> and <b>d</b> - The dimensions of the graphic object:
width, height and depth</li>
</ul>

<li>
External attributes</li>

<ul>
<li>
<b>image</b> - The URI of the image that represents a node.</li>

<li>
<b>bitmap</b> - The URI of the bitmap that represents a node.</li>
</ul>

<li>
Line attributes</li>

<ul>
<li>
<b>width </b>- The width of the line.</li>

<li>
<b>arrow</b> - The type of the arrow for directed edges. See section 5.7
for arrow type</li>

<li>
<b>capstyle</b> - Defines the end of the line. See section 5.7</li>

<li>
<b>joinstyle</b> - Defines the Line Joints. See section 5.7</li>

<li>
<b>smooth</b> - Boolean value. If the smooth value is true, the line is
drawn as splines. Otherwise, the line is drawn as straight line</li>

<li>
<b>splinestep</b>s - The number of line segments for the spline</li>
</ul>

<li>
Text attributes</li>

<ul>
<li>
<b>justify</b> - Text justification. See section 5.8</li>

<li>
<b>font</b> - Name of the font to be used for the text</li>
</ul>

<li>
Bitmap attributes</li>

<ul>
<li>
<b>background</b> - Background color to be used for the bitmap</li>

<li>
<b>foreground</b> - Foreground color to be used for the bitmap</li>
</ul>

<li>
Arc attributes</li>

<ul>
<li>
<b>extent</b> - The extension of the arc</li>

<li>
<b>start</b> - The starting angle</li>

<li>
<b>style</b> - The style of the arc. See section 5.7</li>
</ul>

<li>
Graphic object attributes</li>

<ul>
<li>
<b>stipple</b> - The name of the stipple (pattern) to be used for the graphic
object</li>

<li>
<b>visible</b> - Boolean value. If the visible value is true, the graphic
object is visible</li>

<li>
<b>fill</b> - The color of the interior of the graphic object</li>

<li>
<b>outline</b> - The color of the border of the graphic object</li>

<li>
<b>anchor</b> - The anchor position of the graphic object.&nbsp; See Section
5.5</li>
</ul>
</ul>

<h3>
<a NAME="LPCA"></a>10.2 Line, Point and Center Attributes</h3>
<b>Line</b> element does not have attributes. <b>Line</b> element contains
two or more <b>point</b> elements to define a polyline. <b>Line</b> is
used to represent an edge.
<p>A <b>point </b>element is an empty element that has <b>x</b>, <b>y</b>
and <b>z</b> numeric values as attributes. A <b>center</b> point has the
<b>x</b>,
<b>y
</b>and
<b>z</b>
also as attributes.
<h2>
<a NAME="XGMML-RDF"></a>11. XGMML and RDF</h2>
XGMML well formed documents can include other XML vocabularies. In the
near future, several vocabularies can be combined in one document and validate
it using XML Schemas and Namespaces. RDF (Resource Description Framework)
[<a href="#Ref">RDF</a>] is one way to describe metadata about resources.
XGMML allows the inclusion of metadata information for a Graph, Node and/or
Edge using the
<b>att</b> tag.
<p>These two examples show how to combine XGMML and RDF. The first example
is a graph describing a simple website. The nodes represent webpages and
the edges represent hyperlinks. The metadata of the webpages is included
as attribute of a node. RDF and DC (Dublin Core) [<a href="#Ref">DC</a>]
vocabularies have been used to describe the metadata of the nodes.
<pre>&lt;?xml version="1.0"?>
&lt;graph xmlns = "http://www.cs.rpi.edu/XGMML"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directed="1" >
&lt;node id="3" label="http://www.cs.rpi.edu/courses/" weight="5427">
&lt;att>
&lt;rdf:RDF
&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp; xmlns:dc="http://purl.org/dc/elements/1.0/">
&nbsp; &lt;rdf:Description about="http://www.cs.rpi.edu/courses/"
&nbsp;&nbsp;&nbsp; dc:title="Courses at Rensselaer Computer Science
&nbsp;&nbsp;&nbsp; Department"
&nbsp;&nbsp;&nbsp; dc:subject="www@cs.rpi.edu; M.S. requirements; CSCI-1190
&nbsp;&nbsp;&nbsp; Beginning C Programming for Engineers; Courses; People;
&nbsp;&nbsp;&nbsp; Graduate Program; CSCI-4020 Computer&nbsp; Algorithms; CSCI-
&nbsp;&nbsp;&nbsp; 2220-01&nbsp; Programming in Java; Research; Course Selection
&nbsp;&nbsp;&nbsp; Guide; CSCI-4961-01,&nbsp; CSCI-6961-01 Advanced Robotics;&nbsp;
&nbsp;&nbsp;&nbsp; Programming in Java; CSCI-2400 Models&nbsp; of Computation"
&nbsp;&nbsp;&nbsp; dc:date="2000-01-31"
&nbsp;&nbsp;&nbsp; dc:type="Text"
&nbsp;&nbsp;&nbsp; >
&nbsp;&nbsp;&nbsp; &lt;dc:format>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Bag
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_1="text/html"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_2="5427 bytes"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp; &lt;/dc:format>
&nbsp; &lt;/rdf:Description>
&lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;node id="7" label="http://www.cs.rpi.edu/research/" weight="5508">
&lt;att>
&lt;rdf:RDF
&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp; xmlns:dc="http://purl.org/dc/elements/1.0/">
&nbsp; &lt;rdf:Description about="http://www.cs.rpi.edu/research/"
&nbsp;&nbsp;&nbsp; dc:title="Research at Rensselaer Computer Science
&nbsp;&nbsp;&nbsp; Department"
&nbsp;&nbsp;&nbsp; dc:subject="www@cs.rpi.edu; Computing&nbsp; Twin Primes and
&nbsp;&nbsp;&nbsp; Brun's Constant; Generic Programming; ASHE; Current
&nbsp;&nbsp;&nbsp; Events; TEMPEST; Courses; People; Graduate Program; High-
&nbsp;&nbsp;&nbsp; Performance&nbsp; Object-Oriented Programming in Fortran 90;
&nbsp;&nbsp;&nbsp; High Performance&nbsp; Problem-Solving Environment for
&nbsp;&nbsp;&nbsp; Optimization and Control of&nbsp; Chemical and Biological
&nbsp;&nbsp;&nbsp; Processes; Computer Vision; Theory and Algorithms;
&nbsp;&nbsp;&nbsp; technical report library; RPInfo; Undergraduate&nbsp; Program;
&nbsp;&nbsp;&nbsp; Research; Research; Design Conference Room; Rensselaer;
&nbsp;&nbsp;&nbsp; Bryan Rudge; Engineering Databases; anonymous ftp; I.SEE;
&nbsp;&nbsp;&nbsp; info@cs.rpi.edu; Scientific Computing; OpenMath; Proactive
&nbsp;&nbsp;&nbsp; Network Problem Avoidance; Computing&nbsp;&nbsp; Facilities; Computer
&nbsp;&nbsp;&nbsp; Science Department"
&nbsp;&nbsp;&nbsp; dc:date="1999-11-19"
&nbsp;&nbsp;&nbsp; dc:type="Text"
&nbsp;&nbsp;&nbsp; >
&nbsp;&nbsp;&nbsp; &lt;dc:format>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Bag
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_1="text/html"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_2="5508 bytes"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp; &lt;/dc:format>
&nbsp; &lt;/rdf:Description>
&lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;node id="8" label="http://www.cs.rpi.edu/undergrad/" weight="7511">
&lt;att>
&lt;rdf:RDF
&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp; xmlns:dc="http://purl.org/dc/elements/1.0/">
&nbsp; &lt;rdf:Description about="http://www.cs.rpi.edu/undergrad/"
&nbsp;&nbsp;&nbsp; dc:title="Undergraduate Program at Rensselaer Computer
&nbsp;&nbsp;&nbsp; Science Department"
&nbsp;&nbsp;&nbsp; dc:subject="www@cs.rpi.edu; Association for Computing
&nbsp;&nbsp;&nbsp; Machinery; People; Graduate Program; Minor; Prospective
&nbsp;&nbsp;&nbsp; Students FAQ; Admissions Office; Research; BS-MS Degree;
&nbsp;&nbsp;&nbsp; Rensselaer Catalog; Dual Majors; Admissions; ; Computing
&nbsp;&nbsp;&nbsp; Facilities; Undergraduate&nbsp; Program; Rensselaer; Course&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; Descriptions;Computer Science Department"
&nbsp;&nbsp;&nbsp; dc:date="2000-01-26"
&nbsp;&nbsp;&nbsp; dc:type="Text"
&nbsp;&nbsp;&nbsp; >
&nbsp;&nbsp;&nbsp; &lt;dc:format>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Bag
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_1="text/html"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_2="7511 bytes"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp; &lt;/dc:format>
&nbsp; &lt;/rdf:Description>
&lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;node id="1" label="http://www.cs.rpi.edu/" weight="3352">
&lt;att>
&lt;rdf:RDF
&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp; xmlns:dc="http://purl.org/dc/elements/1.0/">
&nbsp; &lt;rdf:Description about="http://www.cs.rpi.edu/"
&nbsp;&nbsp;&nbsp; dc:title="Rensselaer Computer Science Department"
&nbsp;&nbsp;&nbsp; dc:subject="www@cs.rpi.edu; faculty positions; Rensselaer;
&nbsp;&nbsp;&nbsp; Bryan Rudge; Computing Facilities; Courses; People;
&nbsp;&nbsp;&nbsp; Graduate Program; info@cs.rpi.edu; Current Events; ;
&nbsp;&nbsp;&nbsp; RPInfo; Research; Undergraduate&nbsp; Program"
&nbsp;&nbsp;&nbsp; dc:date="2000-01-26"
&nbsp;&nbsp;&nbsp; dc:type="Text"
&nbsp;&nbsp;&nbsp; >
&nbsp;&nbsp;&nbsp; &lt;dc:format>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Bag
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_1="text/html"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdf:_2="3352 bytes"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; />
&nbsp;&nbsp;&nbsp; &lt;/dc:format>
&nbsp; &lt;/rdf:Description>
&lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;edge source="1" target="3" weight="0" label="SRC IMG gfx/courses2.jpg" />
&lt;edge source="7" target="3" weight="0" label="SRC IMG ../gfx/courses2.jpg" />
&lt;edge source="8" target="3" weight="0" label="SRC IMG ../gfx/courses2.jpg" />
&lt;edge source="3" target="7" weight="0" label="SRC IMG ../../gfx/research2.jpg" />
&lt;edge source="1" target="7" weight="0" label="SRC IMG gfx/research2.jpg" />
&lt;edge source="8" target="7" weight="0" label="SRC IMG ../gfx/research2.jpg" />
&lt;edge source="3" target="8" weight="0" label="SRC IMG ../../gfx/ugrad2.jpg" />
&lt;edge source="7" target="8" weight="0" label="SRC IMG ../gfx/ugrad2.jpg" />
&lt;edge source="1" target="8" weight="0" label="SRC IMG gfx/ugrad2.jpg" />
&lt;edge source="3" target="1" weight="0" label="SRC IMG ../../gfx/corner2.jpg" />
&lt;edge source="7" target="1" weight="0" label="SRC IMG ../gfx/corner2.jpg" />
&lt;edge source="8" target="1" weight="0" label="SRC IMG ../gfx/corner2.jpg" />
&lt;/graph></pre>
The second example is a simple graph showing a relationship between two
people. The metadata information about a person can be included as an attribute
of the node. RDF and VCard (The Electronic Business Card) [<a href="#Ref">VCARD</a>]
vocabularies have been used to describe the metadata of the nodes
<br>&nbsp;
<pre>&lt;?xml version="1.0"?>
&lt;graph xmlns = "http://www.cs.rpi.edu/XGMML"&nbsp; directed="1" >
&lt;node id="1" label="Mukkai Krishnamoorthy">
&lt;att>
&nbsp;&nbsp;&nbsp; &lt;rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:vCard = "http://imc.org/vCard/3.0#" >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Description about = "http://www.cs.rpi.edu/~moorthy" >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:FN> Mukkai Krishnamoorthy &lt;/vCard:FN>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:N rdf:parseType="Resource">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Family> Krishnamoorthy &lt;/vCard:Family>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Given> Mukkai &lt;/vCard:Given>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:N>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:EMAIL>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:value> moorthy@cs.rpi.edu &lt;/rdf:value>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:type resource ="http://imc.org/vCard/3.0#internet" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:EMAIL>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:ORG rdf:parseType="Resource">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Orgname> RPI &lt;/vCard:Orgname>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Orgunit>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:seq>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:li> Computer Science &lt;/rdf:li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:li> Professor &lt;/rdf:li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rdf:seq>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:Orgunit>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:ORG>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rdf:Description>
&nbsp;&nbsp;&nbsp; &lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;node id="2" label="John Punin">
&lt;att>
&nbsp;&nbsp;&nbsp; &lt;rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:vCard = "http://imc.org/vCard/3.0#" >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:Description about = "http://www.cs.rpi.edu/~puninj" >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:FN> John Punin &lt;/vCard:FN>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:N rdf:parseType="Resource">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Family> Punin &lt;/vCard:Family>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Given>&nbsp; John &lt;/vCard:Given>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:N>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:EMAIL>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:value> puninj@cs.rpi.edu &lt;/rdf:value>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:type resource ="http://imc.org/vCard/3.0#internet" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:EMAIL>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:ORG rdf:parseType="Resource">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Orgname> RPI &lt;/vCard:Orgname>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vCard:Orgunit>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:seq>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:li> Computer Science &lt;/rdf:li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rdf:li> PhD student &lt;/rdf:li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rdf:seq>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:Orgunit>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/vCard:ORG>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/rdf:Description>
&nbsp;&nbsp;&nbsp; &lt;/rdf:RDF>
&lt;/att>
&lt;/node>
&lt;edge source="1" target="2" weight="0" label="advisor"/>
&lt;edge source="2" target="1" weight="0" label="advisee"/>
&lt;/graph></pre>

<h2>
<a NAME="Appendices"></a>Appendices</h2>

<h2>
<a NAME="Characters"></a>A. Characters</h2>
Since XGMML is an application of XML, XGMML supports Unicode [<a href="#Ref">XML-1.0</a>].
An XGMML character is defined to be an Unicode character [<a href="#Ref">Unicode</a>].
Any Unicode character allowed by XML is also allowed by XGMML. XGMML documents
are assumed to be written in UTF-8 if the encoding specification is omitted.
XGMML applications besides supporting UTF-8 default encoding, should also
support iso-8859-1 (Latin 1) encoding. <a href="http://www.w3.org/TR/REC-xml#CharClasses">Appendix
B of XML 1.0</a> document explains in more detail what Unicode characters
can be used for tag names.
<h2>
<a NAME="XGMML-DTD"></a>B. XGMML 1.0 DTD</h2>

<pre>&lt;!-- DTD for XGMML 1.0 -->
&lt;!-- Authors: John Punin and Mukkai Krishnamoorthy -->
&lt;!-- Computer Science Department -->
&lt;!-- Rensselaer Polytechnic Institute -->
&lt;!-- xgmml.dtd,v 1.0 06/27/2001 -->

&lt;!-- Boolean type -->
&lt;!ENTITY % boolean.type "(0|1)" >

&lt;!-- Positive number type -->
&lt;!ENTITY % number.type "NMTOKEN">

&lt;!-- ID type -->
&lt;!ENTITY % id.type "NMTOKEN">

&lt;!-- String type -->
&lt;!ENTITY % string.type "CDATA">


&lt;!-- Standard XML Namespace attribute -->
&lt;!ENTITY % nds 'xmlns'>

&lt;!-- URI type -->
&lt;!ENTITY % uri.type "%string.type;">

&lt;!-- Anchor type -->
&lt;!ENTITY % anchor.type "(c|n|ne|e|se|s|sw|w|nw)">

&lt;!-- Type of Graphics (GML types) -->
&lt;!ENTITY % type-graphics-gml.type "arc|bitmap|image|line|oval|polygon|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle|text">

&lt;!-- Type of Graphics (New types) -->
&lt;!ENTITY % type-graphics-app.type "box|circle|ver_ellipsis|hor_ellipsis|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rhombus|triangle|pentagon|hexagon|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; octagon">

&lt;!-- Line types -->
&lt;!-- Arrow type -->
&lt;!ENTITY % arrow.type "(none | first | last | both)">
&lt;!-- Capstyle type -->
&lt;!ENTITY % capstyle.type "(butt | projecting | round)">
&lt;!-- Joinstyle type -->
&lt;!ENTITY % joinstyle.type "(bevel | miter | round)">
&lt;!-- Arc style&nbsp; type -->
&lt;!ENTITY % arcstyle.type "(pieslice | chord | arc)">

&lt;!-- Text types -->
&lt;!-- Text justification type -->
&lt;!ENTITY % justify.type "(left | right | center)">
&lt;!-- Font type -->
&lt;!ENTITY % font.type "%string.type;">
&lt;!-- Color type -->
&lt;!ENTITY % color.type "%string.type;">

&lt;!-- Angle type -->
&lt;!ENTITY % angle.type "%string.type;">

&lt;!-- Object type -->
&lt;!ENTITY % object.type "(list | string | real | integer)">

&lt;!-- Global Attributes -->
&lt;!ENTITY % global-atts "id %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelanchor %string.type; #IMPLIED">

&lt;!-- Standard XML Attributes -->
&lt;!ENTITY % xml-atts "%nds; %uri.type; #FIXED 'http://www.cs.rpi.edu/XGMML'&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:lang NMTOKEN #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:space (default | preserve) #IMPLIED">

&lt;!-- Standard XLink Attributes -->
&lt;!ENTITY % xlink-atts&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:type (simple) #FIXED 'simple'&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:role CDATA #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:title CDATA #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:show (new|embed|replace) #FIXED 'replace'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:actuate (onLoad|onRequest) #FIXED 'onRequest'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlink:href CDATA #IMPLIED">

&lt;!-- Safe Graph Attributes -->
&lt;!ENTITY % graph-atts-safe "directed %boolean.type; '0' ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;!-- Unsafe Graph Attributes (GML) -->
&lt;!ENTITY % graph-atts-gml-unsafe "Vendor %string.type;&nbsp; #IMPLIED">

&lt;!-- Unsafe Graph Attributes (new attributes) -->
&lt;!ENTITY % graph-atts-app-unsafe "Scale %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rootnode %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Layout %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphic %boolean.type; #IMPLIED">

&lt;!-- Graph Element -->
&lt;!ELEMENT graph (att*,(node | edge)*)>
&lt;!-- Graph Attributes -->
&lt;!ATTLIST graph
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xml-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-gml-unsafe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graph-atts-app-unsafe;>

&lt;!-- Safe Node Attributes (GML) -->
&lt;!ENTITY % node-atts-gml-safe "edgeanchor %string.type; #IMPLIED">
&lt;!-- Safe Node Attributes (new attributes) -->
&lt;!ENTITY % node-atts-app-safe "weight %string.type;&nbsp; #IMPLIED">

&lt;!-- Node Element -->
&lt;!ELEMENT node (graphics?,att*)>
&lt;!-- Node Attributes -->
&lt;!ATTLIST node
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %node-atts-gml-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %node-atts-app-safe;>

&lt;!-- Safe Edge Attributes (GML) -->
&lt;!ENTITY % edge-atts-gml-safe "source %number.type; #REQUIRED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target %number.type; #REQUIRED">
&lt;!-- Safe Edge Attributes (new attributes) -->
&lt;!ENTITY % edge-atts-app-safe "weight %string.type; #IMPLIED">

&lt;!-- Edge Element -->
&lt;!ELEMENT edge (graphics?,att*)>
&lt;!-- Edge Attributes -->
&lt;!ATTLIST edge
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %xlink-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %edge-atts-gml-safe;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %edge-atts-app-safe;>

&lt;!-- Graphics Type&nbsp; -->
&lt;!ENTITY % graphics-type-att "type (%type-graphics-gml.type;|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %type-graphics-app.type;) #IMPLIED">

&lt;!-- Point Attributes (x,y,z)&nbsp; -->
&lt;!ENTITY % point-atts "x %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; z %number.type; #IMPLIED">

&lt;!-- Dimension Attributes (width,height,depth)&nbsp; -->
&lt;!ENTITY % dimension-atts "w %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d %number.type; #IMPLIED">

&lt;!-- External Attributes (Image and Bitmap)&nbsp; -->
&lt;!ENTITY % external-atts "image %uri.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitmap %uri.type; #IMPLIED">

&lt;!-- Line Attributes -->
&lt;!ENTITY % line-atts "width %number.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrow %arrow.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capstyle %capstyle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; joinstyle %joinstyle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smooth %boolean.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; splinesteps %number.type; #IMPLIED">

&lt;!-- Text Attributes -->
&lt;!ENTITY % text-atts "justify %justify.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font&nbsp; %font.type; #IMPLIED">

&lt;!-- Bitmap Attributes -->
&lt;!ENTITY % bitmap-atts "background %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreground %color.type; #IMPLIED">

&lt;!-- Arc Attributes -->
&lt;!ENTITY % arc-atts "extent %angle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start %angle.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; style %arcstyle.type;&nbsp; #IMPLIED">

&lt;!-- Graphical Object Attributes -->
&lt;!ENTITY % object-atts "stipple %string.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; visible %boolean.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fill %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outline %color.type; #IMPLIED
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anchor %anchor.type; #IMPLIED">

&lt;!-- Graphics Element -->
&lt;!ELEMENT graphics ((Line? | center?),att*)>
&lt;!-- Graphics Attributes -->
&lt;!ATTLIST graphics
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %graphics-type-att;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %dimension-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %external-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %line-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %text-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %bitmap-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %arc-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %object-atts;>

&lt;!-- Center Point Element -->
&lt;!ELEMENT center EMPTY>
&lt;!ATTLIST center&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;>

&lt;!-- Line Element -->
&lt;!ELEMENT Line (point,point+)>

&lt;!-- Point Element -->
&lt;!ELEMENT point EMPTY>
&lt;!ATTLIST point&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %point-atts;>

&lt;!-- Value Attribute -->
&lt;!ENTITY % attribute-value "value %string.type; #IMPLIED">
&lt;!-- Type Attribute -->
&lt;!ENTITY % attribute-type "type %object.type;&nbsp; #IMPLIED">

&lt;!-- Att Element -->
&lt;!ELEMENT att (#PCDATA | att | graph)*>
&lt;!-- Att Attributes -->
&lt;!ATTLIST att
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %global-atts;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %attribute-value;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %attribute-type;></pre>

<h2>
<a NAME="XGMML-Schema"></a>C. XGMML 1.0 Schema</h2>

<pre>&lt;?xml version='1.0'?>

&lt;!-- XML schema for XGMML 1.0 -->
&lt;!-- Authors: John Punin and Mukkai Krishnamoorthy -->
&lt;!-- Computer Science Department -->
&lt;!-- Rensselaer Polytechnic Institute -->
&lt;!-- xgmml.xsd,v 1.0 06/27/2001 -->

&lt;xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; targetNamespace="http://www.cs.rpi.edu/XGMML"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xml="http://www.w3.org/XML/1998/namespace"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xlink="http://www.w3.org/1999/xlink"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="http://www.cs.rpi.edu/XGMML"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elementFormDefault="qualified"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attributeFormDefault="unqualified"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version="xgmml 1.0">

&lt;!-- get access to the xml: attribute groups for xml:lang -->
&lt;xsd:import namespace="http://www.w3.org/XML/1998/namespace"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; schemaLocation="http://www.w3.org/2001/xml.xsd"/>

&lt;!-- get access to the xlink: attribute groups for xlink:type (simple) -->
&lt;xsd:import namespace="http://www.w3.org/1999/xlink"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; schemaLocation="xlinks-2001.xsd"/>

&lt;!-- Boolean type -->
&lt;xsd:simpleType name="boolean.type">
&nbsp;&lt;xsd:restriction base="xsd:nonNegativeInteger">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="0"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="1"/>
&nbsp;&lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Positive number type -->
&lt;xsd:simpleType name="number.type">
&nbsp; &lt;xsd:restriction base="xsd:nonNegativeInteger"/>
&lt;/xsd:simpleType>

&lt;!-- ID type -->
&lt;xsd:simpleType name="id.type">
&nbsp; &lt;xsd:restriction base="number.type"/>
&lt;/xsd:simpleType>


&lt;!-- String type -->
&lt;xsd:simpleType name="string.type">
&nbsp; &lt;xsd:restriction base="xsd:string"/>
&lt;/xsd:simpleType>

&lt;!-- URI type -->
&lt;xsd:simpleType name="uri.type">
&nbsp; &lt;xsd:restriction base="xsd:anyURI"/>
&lt;/xsd:simpleType>

&lt;!-- Anchor type -->
&lt;xsd:simpleType name="anchor.type">
&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="c"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="n"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="ne"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="e"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="se"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="s"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="sw"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="w"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="nw"/>
&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Graphics Type&nbsp; -->
&lt;xsd:simpleType name="type-graphics.type">
&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">

&lt;!-- Type of Graphics (GML types) type-graphics-gml.type -->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="arc"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="bitmap"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="image"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="line"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="oval"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="polygon"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="rectangle"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="text"/>

&lt;!-- Type of Graphics (New types) type-graphics-app.type -->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="box"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="circle"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="ver_ellipsis"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="hor_ellipsis"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="rhombus"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="triangle"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="pentagon"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="hexagon"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="octagon"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Line types -->
&lt;!-- Arrow type -->
&lt;xsd:simpleType name="arrow.type">
&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="none"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="first"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="last"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="both"/>
&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Capstyle type -->
&lt;xsd:simpleType name="capstyle.type">
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="butt"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="projecting"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="round"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Joinstyle type -->
&lt;xsd:simpleType name="joinstyle.type">&nbsp;
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="bevel"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="miter"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="round"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Arc style&nbsp; type -->
&lt;xsd:simpleType name="arcstyle.type">&nbsp;
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="pieslice"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="chord"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="arc"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Text types -->
&lt;!-- Text justification type -->
&lt;xsd:simpleType name="justify.type">
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="left"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="right"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="center"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Font type -->
&lt;xsd:simpleType name="font.type">
&nbsp; &lt;xsd:restriction base="xsd:string"/>
&lt;/xsd:simpleType>

&lt;!-- Color type -->
&lt;xsd:simpleType name="color.type">&nbsp;
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:string"/>
&lt;/xsd:simpleType>

&lt;!-- Angle type -->
&lt;!-- Number followed by unit identifier (deg, grad or rad)&nbsp; -->
&lt;xsd:simpleType name="angle.type">
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:string">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:pattern value="(\+|-)?\d*(deg|grad|rad)?"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Object type -->
&lt;xsd:simpleType name="object.type">&nbsp;
&nbsp;&nbsp; &lt;xsd:restriction base="xsd:NMTOKEN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="list"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="string"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="real"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:enumeration value="integer"/>
&nbsp;&nbsp; &lt;/xsd:restriction>
&lt;/xsd:simpleType>

&lt;!-- Global Attributes -->
&lt;xsd:attributeGroup name="global-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="id" type="number.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="string.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="label" type="string.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="labelanchor" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Standard XML Attributes -->
&lt;xsd:attributeGroup name="xml-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ref="xml:lang"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ref="xml:space"/>
&lt;/xsd:attributeGroup>

&lt;!-- Safe Graph Attributes -->
&lt;xsd:attributeGroup name="graph-atts-safe">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="directed" type="boolean.type"&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default="0"/>
&lt;/xsd:attributeGroup>

&lt;!-- Unsafe Graph Attributes (GML) -->
&lt;xsd:attributeGroup name="graph-atts-gml-unsafe">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="Vendor" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Unsafe Graph Attributes (new attributes) (Graphics attributes) -->
&lt;xsd:attributeGroup name="graph-atts-app-unsafe-gr">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="Scale" type="xsd:integer"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="Layout" type="string.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="Graphic" type="boolean.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Unsafe Graph Attributes (new attributes) (Structural attributes) -->
&lt;xsd:attributeGroup name="graph-atts-app-unsafe-ngr">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="Rootnode" type="number.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Simple Graph (Structural graph) -->
&lt;xsd:complexType name="simpleGraph">
&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:choice minOccurs="0" maxOccurs="unbounded">&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="node"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="edge"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:choice>
&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="global-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="xml-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="xlink:simpleLink"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="graph-atts-safe"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="graph-atts-gml-unsafe"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="graph-atts-app-unsafe-ngr"/>
&lt;/xsd:complexType>

&lt;!-- Graphical Graph "is a" Simple Graph -->
&lt;xsd:complexType name="graphicGraph">
&nbsp;&nbsp; &lt;xsd:complexContent>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:extension base="simpleGraph">&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="graph-atts-app-unsafe-gr"/>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:extension>
&nbsp;&nbsp; &lt;/xsd:complexContent>
&lt;/xsd:complexType>

&lt;!-- Graph Element -->
&lt;xsd:element name="graph" type="graphicGraph"/>

&lt;!-- Safe Node Attributes (GML) -->
&lt;xsd:attributeGroup name="node-atts-gml-safe">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="edgeanchor" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Safe Node Attributes (new attributes) -->
&lt;xsd:attributeGroup name="node-atts-app-safe">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="weight" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Simple Node (Structural Node) -->
&lt;xsd:complexType name="simpleNode">
&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="global-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="xlink:simpleLink"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="node-atts-app-safe"/>
&lt;/xsd:complexType>

&lt;!-- Graphical Node "is a" Simple Node -->
&lt;xsd:complexType name="graphicNode">&nbsp;
&nbsp; &lt;xsd:complexContent>
&nbsp;&nbsp;&nbsp; &lt;xsd:extension base="simpleNode">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="graphics" minOccurs="0"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="node-atts-gml-safe"/>
&nbsp;&nbsp;&nbsp; &lt;/xsd:extension>
&nbsp; &lt;/xsd:complexContent>
&lt;/xsd:complexType>

&lt;!-- Node Element -->
&lt;xsd:element name="node" type="graphicNode"/>

&lt;!-- Safe Edge Attributes (GML) -->
&lt;xsd:attributeGroup name="edge-atts-gml-safe">
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="source" type="number.type" use="required"/>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="target" type="number.type" use="required"/>
&lt;/xsd:attributeGroup>

&lt;!-- Safe Edge Attributes (new attributes) -->
&lt;xsd:attributeGroup name="edge-atts-app-safe">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="weight" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Simple Edge (Structural Edge) -->
&lt;xsd:complexType name="simpleEdge">
&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="global-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="xlink:simpleLink"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="edge-atts-gml-safe"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="edge-atts-app-safe"/>
&lt;/xsd:complexType>

&lt;!-- Graphical Edge "is a" Simple Edge -->
&lt;xsd:complexType name="graphicEdge">
&nbsp;&nbsp; &lt;xsd:complexContent>&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:extension base="simpleEdge">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="graphics" minOccurs="0"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:extension>
&nbsp;&nbsp; &lt;/xsd:complexContent>
&lt;/xsd:complexType>

&lt;!-- Edge Element -->
&lt;xsd:element name="edge" type="graphicEdge"/>

&lt;!-- Graphics Type&nbsp; -->
&lt;xsd:attributeGroup name="graphics-type-att">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="type" type="type-graphics.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Point Attributes (x,y,z)&nbsp; -->
&lt;xsd:attributeGroup name="point-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="x" type="xsd:double"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="y" type="xsd:double"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="z" type="xsd:double"/>
&lt;/xsd:attributeGroup>

&lt;!-- Dimension Attributes (width,height,depth)&nbsp; -->
&lt;xsd:attributeGroup name="dimension-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="w" type="xsd:double"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="h" type="xsd:double"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="d" type="xsd:double"/>
&lt;/xsd:attributeGroup>

&lt;!-- External Attributes (Image and Bitmap)&nbsp; -->
&lt;xsd:attributeGroup name="external-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="image" type="uri.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="bitmap" type="uri.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Line Attributes -->
&lt;xsd:attributeGroup name="line-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="width" type="number.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="arrow" type="arrow.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="capstyle" type="capstyle.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="joinstyle" type="joinstyle.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="smooth" type="boolean.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="splinesteps" type="number.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Text Attributes -->
&lt;xsd:attributeGroup name="text-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="justify" type="justify.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="font" type="font.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Bitmap Attributes -->
&lt;xsd:attributeGroup name="bitmap-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="background" type="color.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="foreground" type="color.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Arc Attributes -->
&lt;xsd:attributeGroup name="arc-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="extent" type="xsd:integer"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="start" type="xsd:integer"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="style" type="arcstyle.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Graphical Object Attributes -->
&lt;xsd:attributeGroup name="object-atts">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="stipple" type="string.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="visible" type="boolean.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="fill" type="color.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="outline" type="color.type"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="anchor" type="anchor.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Graphics Element -->
&lt;xsd:element name="graphics">
&nbsp; &lt;xsd:complexType>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:choice minOccurs="0" maxOccurs="1">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="Line"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="center"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:choice>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="graphics-type-att"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="point-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="dimension-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="external-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="line-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="text-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="bitmap-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="arc-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="object-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:complexType>
&lt;/xsd:element>

&lt;!-- Center Point Element -->
&lt;xsd:element name="center">
&nbsp;&nbsp; &lt;xsd:complexType>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="point-atts"/>
&nbsp; &lt;/xsd:complexType>
&lt;/xsd:element>

&lt;!-- Line Element -->
&lt;xsd:element name="Line">
&nbsp;&nbsp; &lt;xsd:complexType>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="point" minOccurs="2" maxOccurs="unbounded"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp; &lt;/xsd:complexType>
&lt;/xsd:element>

&lt;!-- Point Element -->
&lt;xsd:element name="point">
&nbsp;&nbsp; &lt;xsd:complexType>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="point-atts"/>
&nbsp; &lt;/xsd:complexType>
&lt;/xsd:element>

&lt;!-- Value Attribute -->
&lt;xsd:attributeGroup name="attribute-value">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="value" type="string.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Type Attribute -->
&lt;xsd:attributeGroup name="attribute-type">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="type" type="object.type"/>
&lt;/xsd:attributeGroup>

&lt;!-- Att Element -->
&lt;xsd:element name="att">
&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:complexType mixed="true">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:element ref="graph" minOccurs="0" maxOccurs="unbounded"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:sequence>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="global-atts"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="attribute-value"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:attributeGroup ref="attribute-type"/>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:complexType>
&lt;/xsd:element>

&lt;/xsd:schema></pre>

<h2>
<a NAME="XGMML-Ex"></a>D. XGMML Examples</h2>

<h3>
D.1 Graph file in GML format&nbsp; and&nbsp; XGMML format.</h3>
This GML example is taken from the GML web site: http://infosun.fmi.uni-passau.de/Graphlet/GML/example1.html.
<p><b>GML Format</b>
<pre>graph [
&nbsp;&nbsp;&nbsp; comment "This is a sample graph"
&nbsp;&nbsp;&nbsp; directed 1
&nbsp;&nbsp;&nbsp; id 42
&nbsp;&nbsp;&nbsp; label "Hello, I am a graph"
&nbsp;&nbsp;&nbsp; node [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "Node 1"
&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp; node [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "node 2"
&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp; node [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "node 3"
&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp; edge [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "Edge from node 1 to node 2"
&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp; edge [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "Edge from node 2 to node 3"
&nbsp;&nbsp;&nbsp; ]
&nbsp;&nbsp;&nbsp; edge [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label "Edge from node 3 to node 1"
&nbsp;&nbsp;&nbsp; ]
]</pre>
<b>XGMML Format</b>
<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//EN" "http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">
&lt;graph directed="1" id="42" label="Hello, I am a graph">
&lt;node id="1" label="Node 1">
&lt;/node>
&lt;node id="2" label="node 2">
&lt;/node>
&lt;node id="3" label="node 3">
&lt;/node>
&lt;edge source="1" target="2" label="Edge from node 1 to node 2">
&lt;/edge>
&lt;edge source="2" target="3" label="Edge from node 2 to node 3">
&lt;/edge>
&lt;edge source="3" target="1" label="Edge from node 3 to node 1">
&lt;/edge>
&lt;/graph></pre>

<h3>
D.2 XGMML graph file with graphics information.</h3>

<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph PUBLIC "-//John Punin//DTD graph description//EN" "http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">

&lt;graph directed="1" graphic="1" Layout="points">
&lt;node id="1" label="Node 1"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="rhombus" x="270" y="90" >
&lt;/graphics>
&lt;/node>
&lt;node id="2" label="node 2"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="ver_ellipsis" x="350" y="190" >
&lt;/graphics>
&lt;/node>
&lt;node id="3" label="node 3"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="circle" x="190" y="190" >
&lt;/graphics>
&lt;/node>
&lt;edge source="3" target="1" weight="0"&nbsp;
label="Edge from node 3 to node 1" >
&lt;/edge>
&lt;edge source="1" target="2" weight="0"&nbsp;
label="Edge from node 1 to node 2" >
&lt;/edge>
&lt;edge source="2" target="3" weight="0"&nbsp;
label="Edge from node 2 to node 3" >
&lt;/edge>
&lt;/graph></pre>

<h3>
D.3 XGMML graph file of a simple website.</h3>

<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph SYSTEM "xgmml.dtd">
&lt;graph directed="1" Rootnode="1">
&lt;node id="58" label="http://www.deitel.com/products_and_services/publications/jhtp2.htm" weight="-1">
&lt;/node>
&lt;node id="57" label="http://www.inquiry.com/techtips/java_pro/" weight="-1">
&lt;/node>
&lt;node id="56" label="http://java.sun.com/products/jdk/1.1/docs/api/packages.html" weight="-1">
&lt;/node>
&lt;node id="55" label="http://www.gamelan.com/" weight="-1">
&lt;/node>
&lt;node id="54" label="http://java.sun.com/" weight="-1">
&lt;/node>
&lt;node id="53" label="http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Java/" weight="-1">
&lt;/node>
&lt;node id="52" label="http://www.cs.rpi.edu/~puninj/JAVA/tests/esum98.html" weight="8025">
&lt;att name="title" value="Java Exam"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="8025"/>
&lt;att name="date" value="Tue Sep 29 14:55:04 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="51" label="http://www.cs.rpi.edu/~puninj/JAVA/projects/proj1.html" weight="1910">
&lt;att name="title" value="Project 1"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="1910"/>
&lt;att name="date" value="Wed Jun&nbsp; 9 23:01:06 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="50" label="http://www.cs.rpi.edu/~puninj/JAVA/homeworks/hw2.html" weight="2795">
&lt;att name="title" value="Homework 2"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="2795"/>
&lt;att name="date" value="Sun May 30 22:28:52 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="49" label="http://www.cs.rpi.edu/~puninj/JAVA/homeworks/hw1.html" weight="3157">
&lt;att name="title" value="Homework 1"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="3157"/>
&lt;att name="date" value="Wed May 19 10:40:54 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="48" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec4.ppt" weight="53760">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/vnd.ms-powerpoint"/>
&lt;att name="size" value="53760"/>
&lt;att name="date" value="Mon Sep 14 13:22:26 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="47" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec4.rtf" weight="26048">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="text/rtf"/>
&lt;att name="size" value="26048"/>
&lt;att name="date" value="Mon Sep 14 13:22:29 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="46" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec4.ps" weight="211388">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/postscript"/>
&lt;att name="size" value="211388"/>
&lt;att name="date" value="Mon Sep 14 13:34:29 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="45" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec4.html" weight="9192">
&lt;att name="title" value="Programming in Java:&nbsp; Lecture Notes 4"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="9192"/>
&lt;att name="date" value="Mon Oct 26 02:17:24 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="44" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec3.ppt" weight="169984">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/vnd.ms-powerpoint"/>
&lt;att name="size" value="169984"/>
&lt;att name="date" value="Sat Aug 29 00:37:59 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="43" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec3.rtf" weight="93603">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="text/rtf"/>
&lt;att name="size" value="93603"/>
&lt;att name="date" value="Sat Aug 29 00:38:03 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="42" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec3.ps" weight="539469">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/postscript"/>
&lt;att name="size" value="539469"/>
&lt;att name="date" value="Sat Aug 29 00:38:02 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="41" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec3.html" weight="40702">
&lt;att name="title" value="Programming in Java : Lecture Notes 3"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="40702"/>
&lt;att name="date" value="Wed Apr&nbsp; 7 12:00:44 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="40" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec2.ppt" weight="86016">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/vnd.ms-powerpoint"/>
&lt;att name="size" value="86016"/>
&lt;att name="date" value="Sat Aug 29 00:11:44 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="39" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec2.rtf" weight="33351">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="text/rtf"/>
&lt;att name="size" value="33351"/>
&lt;att name="date" value="Sat Aug 29 00:11:52 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="38" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec2.ps" weight="165658">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/postscript"/>
&lt;att name="size" value="165658"/>
&lt;att name="date" value="Sat Aug 29 00:14:24 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="37" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec2.html" weight="11174">
&lt;att name="title" value="Programming In Java : Lecture Notes 2"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="11174"/>
&lt;att name="date" value="Wed Sep&nbsp; 2 23:10:32 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="36" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec1.ppt" weight="48640">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/vnd.ms-powerpoint"/>
&lt;att name="size" value="48640"/>
&lt;att name="date" value="Sat Aug 29 00:11:43 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="35" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec1.rtf" weight="14871">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="text/rtf"/>
&lt;att name="size" value="14871"/>
&lt;att name="date" value="Sat Aug 29 00:11:51 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="34" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec1.ps" weight="79558">
&lt;att name="title" value="No title"/>
&lt;att name="mime" value="application/postscript"/>
&lt;att name="size" value="79558"/>
&lt;att name="date" value="Sat Aug 29 00:14:22 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="33" label="http://www.cs.rpi.edu/~puninj/JAVA/classes/lec1.html" weight="4530">
&lt;att name="title" value="Programming in Java : Lecture Notes 1"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="4530"/>
&lt;att name="date" value="Wed Sep&nbsp; 2 16:49:15 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="32" label="http://www.oreilly.com/catalog/jenut/" weight="-1">
&lt;/node>
&lt;node id="31" label="http://www.oreilly.com/catalog/javanut2/" weight="-1">
&lt;/node>
&lt;node id="30" label="http://www.prenhall.com/allbooks/esm_0138993947.html" weight="-1">
&lt;/node>
&lt;node id="29" label="mailto:puninj@rpi.edu" weight="-1">
&lt;/node>
&lt;node id="28" label="http://www.cs.rpi.edu/~puninj/JAVA/DEITEL/JHTP2/" weight="-1">
&lt;att name="code" value="404"/>
&lt;/node>
&lt;node id="27" label="http://www.rpi.edu/dept/its/consult/www2/WWW/" weight="-1">
&lt;/node>
&lt;node id="26" label="http://www.cs.rpi.edu/~puninj/ASHE/help.html" weight="-1">
&lt;/node>
&lt;node id="25" label="http://www.cs.rpi.edu/~puninj/ASHE/RCS.html" weight="-1">
&lt;/node>
&lt;node id="24" label="http://www.rpi.edu/Computing/Docs/Memos/rpi120/rpi120.html" weight="-1">
&lt;/node>
&lt;node id="23" label="http://www.rpi.edu/~ricem4/" weight="-1">
&lt;/node>
&lt;node id="22" label="http://www.rpi.edu/~waterj2/" weight="-1">
&lt;/node>
&lt;node id="21" label="http://www.rpi.edu/~ludwis/" weight="-1">
&lt;/node>
&lt;node id="20" label="http://www.rpi.edu/~obergg/" weight="-1">
&lt;/node>
&lt;node id="19" label="http://www.rpi.edu/~milinm/" weight="-1">
&lt;/node>
&lt;node id="18" label="http://www.cs.rpi.edu/~puninj/JAVA/index.html" weight="2314">
&lt;att name="title" value="Programming in Java Home Page"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="2314"/>
&lt;att name="date" value="Thu Jun 10 14:08:41 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="17" label="mailto:puninj@cs.rpi.edu" weight="-1">
&lt;/node>
&lt;node id="16" label="http://www.cs.rpi.edu/" weight="-1">
&lt;/node>
&lt;node id="15" label="http://www.rpi.edu/" weight="-1">
&lt;/node>
&lt;node id="14" label="http://www.rpi.edu/Bestof/April96/Bestof_April96.html" weight="-1">
&lt;/node>
&lt;node id="13" label="http://www.cs.rpi.edu/~puninj/JAVA/toc.html" weight="4407">
&lt;att name="title" value="Programming in Java Table of Contents"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="4407"/>
&lt;att name="date" value="Thu Jun 10 14:14:55 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="12" label="http://www.cs.rpi.edu/~puninj/JAVA/hotlist.html" weight="1253">
&lt;att name="title" value="Hot List of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="1253"/>
&lt;att name="date" value="Fri Nov&nbsp; 6 15:21:22 1998"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="11" label="http://www.cs.rpi.edu/~puninj/JAVA/test.html" weight="473">
&lt;att name="title" value="Tests of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="473"/>
&lt;att name="date" value="Tue Jan 19 13:38:04 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="10" label="http://www.cs.rpi.edu/~puninj/JAVA/projects.html" weight="472">
&lt;att name="title" value="Projects of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="472"/>
&lt;att name="date" value="Thu Jun 10 14:11:40 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="9" label="http://www.cs.rpi.edu/~puninj/JAVA/homewk.html" weight="543">
&lt;att name="title" value="Homeworks of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="543"/>
&lt;att name="date" value="Thu Jun 10 14:11:41 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="8" label="http://www.cs.rpi.edu/~puninj/JAVA/classes.html" weight="1375">
&lt;att name="title" value="Classes of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="1375"/>
&lt;att name="date" value="Wed Jun&nbsp; 9 22:06:02 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="7" label="http://www.cs.rpi.edu/~puninj/JAVA/sched.html" weight="1606">
&lt;att name="title" value="Schedule of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="1606"/>
&lt;att name="date" value="Mon May 17 17:20:55 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="6" label="http://www.cs.rpi.edu/~puninj/JAVA/syllabus.html" weight="8357">
&lt;att name="title" value="Syllabus"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="8357"/>
&lt;att name="date" value="Tue May 18 11:42:14 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="5" label="http://www.cs.rpi.edu/~puninj/JAVA/announ.html" weight="1297">
&lt;att name="title" value="Announcements of Programming in Java"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="1297"/>
&lt;att name="date" value="Thu Jun 10 14:17:23 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="4" label="http://www.cs.rpi.edu/~puninj/JAVA/students.html" weight="2010">
&lt;att name="title" value="Programming in Java - Groups"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="2010"/>
&lt;att name="date" value="Tue Apr&nbsp; 6 14:57:35 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="3" label="http://www.cs.rpi.edu/~puninj/JAVA/ta.html" weight="614">
&lt;att name="title" value="Programming in Java Table of Contents"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="614"/>
&lt;att name="date" value="Thu May 20 11:27:37 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;node id="2" label="http://www.cs.rpi.edu/~puninj/" weight="-1">
&lt;/node>
&lt;node id="1" label="http://www.cs.rpi.edu/~puninj/JAVA/" weight="2314">
&lt;att name="title" value="Programming in Java Home Page"/>
&lt;att name="mime" value="text/html"/>
&lt;att name="size" value="2314"/>
&lt;att name="date" value="Thu Jun 10 14:08:41 1999"/>
&lt;att name="code" value="200"/>
&lt;/node>
&lt;edge label="SRC IMG ../icon/lfarrw.gif" source="51" target="18">
&lt;/edge>
&lt;edge label="SRC IMG ../icon/lfarrw.gif" source="50" target="18">
&lt;/edge>
&lt;edge label="SRC IMG ../../icon/lfarrw.gif" source="49" target="18">
&lt;/edge>
&lt;edge label="IMG CS Home Page" source="18" target="16">
&lt;/edge>
&lt;edge label="IMG RPI Info" source="18" target="15">
&lt;/edge>
&lt;edge label="IMG Best of RPI Info" source="18" target="14">
&lt;/edge>
&lt;edge label="IMG TOC" source="18" target="13">
&lt;/edge>
&lt;edge label="IMG Hot List" source="18" target="12">
&lt;/edge>
&lt;edge label="IMG Exams" source="18" target="11">
&lt;/edge>
&lt;edge label="IMG Projects" source="18" target="10">
&lt;/edge>
&lt;edge label="IMG Homework" source="18" target="9">
&lt;/edge>
&lt;edge label="IMG Classes" source="18" target="8">
&lt;/edge>
&lt;edge label="IMG Schedule" source="18" target="7">
&lt;/edge>
&lt;edge label="IMG Syllabus" source="18" target="6">
&lt;/edge>
&lt;edge label="IMG Announcements" source="18" target="5">
&lt;/edge>
&lt;edge label="IMG Students" source="18" target="4">
&lt;/edge>
&lt;edge label="IMG Xiaomei Zhang" source="18" target="3">
&lt;/edge>
&lt;edge label="IMG John Punin" source="18" target="2">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="13" target="18">
&lt;/edge>
&lt;edge label="Code Examples from the Java How To Program 2/e Book" source="13" target="28">
&lt;/edge>
&lt;edge label="Java How to Program, 2E: Download Examples" source="13" target="58">
&lt;/edge>
&lt;edge label="Java How to Program 2/e (Textbook)" source="13" target="30">
&lt;/edge>
&lt;edge label="Ask the Java Pro!" source="13" target="57">
&lt;/edge>
&lt;edge label="Java Package Index" source="13" target="56">
&lt;/edge>
&lt;edge label="Gamelan" source="13" target="55">
&lt;/edge>
&lt;edge label="Java Technology Home Page" source="13" target="54">
&lt;/edge>
&lt;edge label="Yahoo Index on Java" source="13" target="53">
&lt;/edge>
&lt;edge label="Java Exam Summer 1998 (Example)" source="13" target="52">
&lt;/edge>
&lt;edge label="Project" source="13" target="51">
&lt;/edge>
&lt;edge label="Homework 2" source="13" target="50">
&lt;/edge>
&lt;edge label="Homework 1" source="13" target="49">
&lt;/edge>
&lt;edge label="powerpoint" source="13" target="48">
&lt;/edge>
&lt;edge label="MSWord" source="13" target="47">
&lt;/edge>
&lt;edge label="postscript" source="13" target="46">
&lt;/edge>
&lt;edge label="Graphics and Graphical User Interfaces" source="13" target="45">
&lt;/edge>
&lt;edge label="powerpoint" source="13" target="44">
&lt;/edge>
&lt;edge label="MSWord" source="13" target="43">
&lt;/edge>
&lt;edge label="postscript" source="13" target="42">
&lt;/edge>
&lt;edge label="Classes, Inheritance, Interfaces" source="13" target="41">
&lt;/edge>
&lt;edge label="powerpoint" source="13" target="40">
&lt;/edge>
&lt;edge label="MSWord" source="13" target="39">
&lt;/edge>
&lt;edge label="postscript" source="13" target="38">
&lt;/edge>
&lt;edge label="Objects, Classes, Program Constructs" source="13" target="37">
&lt;/edge>
&lt;edge label="powerpoint" source="13" target="36">
&lt;/edge>
&lt;edge label="MSWord" source="13" target="35">
&lt;/edge>
&lt;edge label="postscript" source="13" target="34">
&lt;/edge>
&lt;edge label="Introduction" source="13" target="33">
&lt;/edge>
&lt;edge label=" Syllabus" source="13" target="6">
&lt;/edge>
&lt;edge label="New Class Schedule" source="13" target="7">
&lt;/edge>
&lt;edge label="Students Group Page" source="13" target="4">
&lt;/edge>
&lt;edge label="Code Examples from the Java How To Program 2/e Book" source="13" target="28">
&lt;/edge>
&lt;edge label="Homework 1" source="13" target="9">
&lt;/edge>
&lt;edge label="Homework 2" source="13" target="9">
&lt;/edge>
&lt;edge label="Project" source="13" target="10">
&lt;/edge>
&lt;edge label="John Punin" source="13" target="17">
&lt;/edge>
&lt;edge label="John Punin" source="13" target="2">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="12" target="18">
&lt;/edge>
&lt;edge label="Code Examples from the Java How To Program 2/e Book" source="12" target="28">
&lt;/edge>
&lt;edge label="Java How to Program, 2E: Download Examples" source="12" target="58">
&lt;/edge>
&lt;edge label="Java How to Program 2/e (Textbook)" source="12" target="30">
&lt;/edge>
&lt;edge label="Ask the Java Pro!" source="12" target="57">
&lt;/edge>
&lt;edge label="Java Package Index" source="12" target="56">
&lt;/edge>
&lt;edge label="Gamelan" source="12" target="55">
&lt;/edge>
&lt;edge label="Java Technology Home Page" source="12" target="54">
&lt;/edge>
&lt;edge label="Yahoo Index on Java" source="12" target="53">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="11" target="18">
&lt;/edge>
&lt;edge label="Java Exam Summer 1998 (Example)" source="11" target="52">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="10" target="18">
&lt;/edge>
&lt;edge label="Project" source="10" target="51">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="9" target="18">
&lt;/edge>
&lt;edge label="Homework 2" source="9" target="50">
&lt;/edge>
&lt;edge label="Homework 1" source="9" target="49">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="8" target="18">
&lt;/edge>
&lt;edge label="powerpoint" source="8" target="48">
&lt;/edge>
&lt;edge label="MSWord" source="8" target="47">
&lt;/edge>
&lt;edge label="postscript" source="8" target="46">
&lt;/edge>
&lt;edge label="Graphics and Graphical User Interfaces" source="8" target="45">
&lt;/edge>
&lt;edge label="powerpoint" source="8" target="44">
&lt;/edge>
&lt;edge label="MSWord" source="8" target="43">
&lt;/edge>
&lt;edge label="postscript" source="8" target="42">
&lt;/edge>
&lt;edge label="Classes, Inheritance, Interfaces" source="8" target="41">
&lt;/edge>
&lt;edge label="powerpoint" source="8" target="40">
&lt;/edge>
&lt;edge label="MSWord" source="8" target="39">
&lt;/edge>
&lt;edge label="postscript" source="8" target="38">
&lt;/edge>
&lt;edge label="Objects, Classes, Program Constructs" source="8" target="37">
&lt;/edge>
&lt;edge label="powerpoint" source="8" target="36">
&lt;/edge>
&lt;edge label="MSWord" source="8" target="35">
&lt;/edge>
&lt;edge label="postscript" source="8" target="34">
&lt;/edge>
&lt;edge label="Introduction" source="8" target="33">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="7" target="18">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="6" target="18">
&lt;/edge>
&lt;edge label="Java Examples in a Nutshell" source="6" target="32">
&lt;/edge>
&lt;edge label="Java in a Nutshell" source="6" target="31">
&lt;/edge>
&lt;edge label="Java How To Program 2nd Edition" source="6" target="30">
&lt;/edge>
&lt;edge label="http://www.cs.rpi.edu/~puninj/JAVA/" source="6" target="1">
&lt;/edge>
&lt;edge label="puninj@cs.rpi.edu" source="6" target="17">
&lt;/edge>
&lt;edge label="puninj" source="6" target="29">
&lt;/edge>
&lt;edge label="John Punin" source="6" target="2">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="5" target="18">
&lt;/edge>
&lt;edge label="New Class Schedule" source="5" target="7">
&lt;/edge>
&lt;edge label="Students Group Page" source="5" target="4">
&lt;/edge>
&lt;edge label="Code Examples from the Java How To Program 2/e Book" source="5" target="28">
&lt;/edge>
&lt;edge label="Homework 1" source="5" target="9">
&lt;/edge>
&lt;edge label="Homework 2" source="5" target="9">
&lt;/edge>
&lt;edge label="Project" source="5" target="10">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="4" target="18">
&lt;/edge>
&lt;edge label="ITS : &amp;quot;Help page on WWW&amp;quot;" source="4" target="27">
&lt;/edge>
&lt;edge label="ASHE help file" source="4" target="26">
&lt;/edge>
&lt;edge label="ASHE (A Simple HTML Editor) on RCS workstations." source="4" target="25">
&lt;/edge>
&lt;edge label="Creating On-Line Documents in RPInfo on the World Wide Web" source="4" target="24">
&lt;/edge>
&lt;edge label="Matthew Rice" source="4" target="23">
&lt;/edge>
&lt;edge label="Jeremy Waterfall" source="4" target="22">
&lt;/edge>
&lt;edge label="Steve Ludwig" source="4" target="21">
&lt;/edge>
&lt;edge label="Greg Oberg" source="4" target="20">
&lt;/edge>
&lt;edge label="Matthew Miling" source="4" target="19">
&lt;/edge>
&lt;edge source="4" target="17">
&lt;/edge>
&lt;edge label="puninj@cs.rpi.edu" source="4" target="17">
&lt;/edge>
&lt;edge label="SRC IMG icon/lfarrw.gif" source="3" target="18">
&lt;/edge>
&lt;edge label="John Punin (puninj@cs.rpi.edu)" source="3" target="17">
&lt;/edge>
&lt;edge label="IMG CS Home Page" source="1" target="16">
&lt;/edge>
&lt;edge label="IMG RPI Info" source="1" target="15">
&lt;/edge>
&lt;edge label="IMG Best of RPI Info" source="1" target="14">
&lt;/edge>
&lt;edge label="IMG TOC" source="1" target="13">
&lt;/edge>
&lt;edge label="IMG Hot List" source="1" target="12">
&lt;/edge>
&lt;edge label="IMG Exams" source="1" target="11">
&lt;/edge>
&lt;edge label="IMG Projects" source="1" target="10">
&lt;/edge>
&lt;edge label="IMG Homework" source="1" target="9">
&lt;/edge>
&lt;edge label="IMG Classes" source="1" target="8">
&lt;/edge>
&lt;edge label="IMG Schedule" source="1" target="7">
&lt;/edge>
&lt;edge label="IMG Syllabus" source="1" target="6">
&lt;/edge>
&lt;edge label="IMG Announcements" source="1" target="5">
&lt;/edge>
&lt;edge label="IMG Students" source="1" target="4">
&lt;/edge>
&lt;edge label="IMG Xiaomei Zhang" source="1" target="3">
&lt;/edge>
&lt;edge label="IMG John Punin" source="1" target="2">
&lt;/edge>
&lt;/graph></pre>

<h3>
D.3 XGMML graph file with self loops and parallel edges.</h3>

<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph SYSTEM "xgmml.dtd">
&lt;!-- Graph File Generated for GraphPack 2.0 -->
&lt;graph directed="1" graphic="1" Layout="points">
&lt;node id="1" label="1"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="circle" x="250" y="90" >
&lt;/graphics>
&lt;/node>
&lt;node id="2" label="2"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="circle" x="190" y="150" >
&lt;/graphics>
&lt;/node>
&lt;node id="3" label="3"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="circle" x="330" y="150" >
&lt;/graphics>
&lt;/node>
&lt;node id="6" label="6"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight="0">
&lt;graphics type="circle" x="270" y="230" >
&lt;/graphics>
&lt;/node>
&lt;edge source="1" target="1" weight="1" >
&lt;/edge>
&lt;edge source="1" target="2" weight="0" >
&lt;/edge>
&lt;edge source="6" target="2" weight="4" >
&lt;/edge>
&lt;edge source="1" target="3" weight="0" >
&lt;/edge>
&lt;edge source="1" target="3" weight="2" >
&lt;/edge>
&lt;edge source="2" target="3" weight="6" >
&lt;/edge>
&lt;edge source="3" target="6" weight="0" >
&lt;/edge>
&lt;edge source="1" target="6" weight="0" >
&lt;/edge>
&lt;/graph></pre>

<h3>
D.4 XGMML graph file with subgraphs.</h3>

<pre>&lt;?xml version="1.0"?>
&lt;!DOCTYPE graph SYSTEM "http://www.cs.rpi.edu/~puninj/XGMML/xgmml.dtd">
&lt;graph directed="1">
&lt;node id="1" label="n1">
&lt;att>
&lt;graph directed="1">
&lt;node id="11" label="n11"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;node id="12" label="n12"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;edge source="11" target="12" weight="0"/>
&lt;/graph>
&lt;/att>
&lt;/node>
&lt;node id="2" label="n2">
&lt;att>
&lt;graph directed="1">
&lt;node id="21" label="n21"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;node id="22" label="n22"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;edge source="22" target="21" weight="0"/>
&lt;edge source="21" target="22" weight="0"/>
&lt;/graph>
&lt;/att>
&lt;/node>
&lt;edge source="11" target="21" weight="0"/>
&lt;edge source="12" target="22" weight="0"/>
&lt;edge source="21" target="11" weight="0"/>
&lt;edge source="22" target="11" weight="0"/>
&lt;edge source="22" target="12" weight="0"/>
&lt;/graph></pre>

<h2>
<a NAME="XGMML-MIME"></a>E. XGMML Internet Media Type</h2>
The recommended Internet Media Type (MIME type) for&nbsp; XGMML Document
is <b><i>"application/xgmml</i></b>" . The suffix <b><i>".gr" i</i></b>s
recommended for XGMML files.
<h2>
<a NAME="Ref"></a>F. References</h2>
[CSS2]
<blockquote>"Cascading Style Sheets, level 2", B. Bos, H. W. Lie, C. Lilley,
I. Jacobs, 12 May 1998.
<br>URL: <a href="http://www.w3.org/TR/REC-CSS2">http://www.w3.org/TR/REC-CSS2</a></blockquote>
[DC]
<blockquote>Dublin Core Metadata for Resource Discovery, Internet RFC 2413.
<br>URL: <a href="http://www.ietf.org/rfc/rfc2413.txt">http://www.ietf.org/rfc/rfc2413.txt</a>
<br>URL: <a href="http://purl.oclc.org/dc/">http://purl.oclc.org/dc/</a></blockquote>
[GML]
<blockquote>The GML File Format, Michael Himsolt, 1997.
<br>URL: <a href="http://infosun.fmi.uni-passau.de/Graphlet/GML/">http://infosun.fmi.uni-passau.de/Graphlet/GML/</a></blockquote>
[ISO 639]
<blockquote>(International Organization for Standardization). ISO 639:1988
(E). Code for the representation of names of languages. [Geneva]: International
Organization for Standardization, 1988.</blockquote>
[RDF]
<blockquote>Resource Description Framework (RDF) Model and Syntax Specification
World Wide Web Consortium.
<br>URL: <a href="http://www.w3.org/TR/REC-rdf-syntax">http://www.w3.org/TR/REC-rdf-syntax</a></blockquote>
[RFC1630]
<blockquote>"Universal Resource Identifiers in WWW", T. Berners-Lee, L,
June 1994
<br>URL: <a href="http://www.ietf.org/rfc/rfc1630.txt">http://www.ietf.org/rfc/rfc1630.txt</a></blockquote>
[RFC1738]
<blockquote>"Uniform Resource Locators", T. Berners-Lee, L. Masinter, and
M. McCahill, December 1994.
<br>URL: <a href="http://www.ietf.org/rfc/rfc1738.txt">http://www.ietf.org/rfc/rfc1738.txt</a></blockquote>
[RFC1808]
<blockquote>"Relative Uniform Resource Locators", R. Fielding, June 1995.
<br>URL: <a href="http://www.ietf.org/rfc/rfc1808.txt">http://www.ietf.org/rfc/rfc1808.txt</a></blockquote>
[Unicode]
<blockquote>"The Unicode Consortium, The Unicode Standard. (See <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>
for the latest version and additional information on versions of the standard
and of the Unicode Character Database).</blockquote>
[VCARD]
<blockquote>vCard MIME Directory Profile, F. Dawson and T. Howes, Internet
RFC 2426, September 1998.
<br>URL: <a href="http://www.ietf.org/rfc/rfc2426.txt">http://www.ietf.org/rfc/rfc2426.txt</a>
<br>URL: <a href="http://www.imc.org/pdi/vcardwhite.html">http://www.imc.org/pdi/vcardwhite.html</a></blockquote>
[XHTML-1.0]
<blockquote>"XHTML[tm] 1.0: The Extensible HyperText Markup Language"&nbsp;
W3C Recommendation , 26 January 1998. URL: <a href="http://www.w3.org/TR/xhtml1">http://www.w3.org/TR/xhtml1</a></blockquote>
[XLINK]
<blockquote>"XML Linking Language (XLink)", S. DeRose, E. Maler, D. Orchard
editors, 27 June 2001.
<br>URL: <a href="http://www.w3.org/TR/xlink">http://www.w3.org/TR/xlink</a></blockquote>
[XML-1.0]
<blockquote>"Extensible Markup Language (XML) 1.0" T. Bray, J. Paoli, C.M.
Sperberg-McQueen, editors, 10 February 1998.
<br>URL: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></blockquote>
[XML-NS]
<blockquote>"Namespaces in XML" T. Bray, D. Hollander, A. Layman, editors,
14 January 1999.
<br>URL: <a href="http://www.w3.org/TR/REC-xml-names">http://www.w3.org/TR/REC-xml-names</a>.</blockquote>
[XML-SCHEMA]
<blockquote>"XML Schema Part 1: Structures" H. Thompson, D. Beech, M. Maloney,
N. Mendelsohn editors, 25 February 2000.
<br>URL: <a href="http://www.w3.org/TR/xmlschema-1">http://www.w3.org/TR/xmlschema-1</a>
<br>"XML Schema Part 2: Datatypes" P. Biron and A. Malhotra editors, 25
February 2000.
<br>URL:<a href="http://www.w3.org/TR/xmlschema-2">http://www.w3.org/TR/xmlschema-2</a></blockquote>

<p><br>
<hr WIDTH="100%">
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
</body>
</html>
